//package com.fzu.express.task;
//
//import com.fzu.express.entity.Order;
//import com.fzu.express.entity.Outlet;
//import com.fzu.express.entity.WebUser;
//import com.fzu.express.enums.ReceiveTypeEnum;
//import com.fzu.express.mapper.OrderMapper;
//import com.fzu.express.mapper.OutletMapper;
//import com.fzu.express.mapper.WebUserMapper;
//import com.fzu.express.pojo.Coordinate;
//import com.fzu.express.utils.MapUtil;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.scheduling.annotation.Async;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.Resource;
//
///**
// * @author zyq
// * @date 2022/11/1 23:23
// **/
//@Component
//@Slf4j
//public class RequestTask {
//
//    @Resource
//    private OrderMapper orderMapper;
//    @Resource
//    private OutletMapper outletMapper;
//    @Resource
//    private MapUtil mapUtil;
//    @Resource
//    private WebUserMapper webUserMapper;
//
//    /**
//     * 为订单分配网点和快递员
//     * @param order
//     * @param start
//     * @return 是否分配成功
//     */
//    public void asyncDistributeOrder(Order order, Boolean start) {
//        log.info("【订单分配】线程: {}", Thread.currentThread().getName());
//
//        String address = "";
//        if (start) {
//            if (StringUtils.isNotBlank(order.getSenderProvince())) {
//                address += order.getSenderProvince();
//            }
//            if (StringUtils.isNotBlank(order.getSenderCity())) {
//                address += order.getSenderCity();
//            }
//            if (StringUtils.isNotBlank(order.getSenderTown())) {
//                address += order.getSenderTown();
//            }
//            if (StringUtils.isNotBlank(order.getSenderDetail())) {
//                address += order.getSenderDetail();
//            }
//        } else {
//            if (StringUtils.isNotBlank(order.getReceiverProvince())) {
//                address += order.getReceiverProvince();
//            }
//            if (StringUtils.isNotBlank(order.getReceiverCity())) {
//                address += order.getReceiverCity();
//            }
//            if (StringUtils.isNotBlank(order.getReceiverTown())) {
//                address += order.getReceiverTown();
//            }
//            if (StringUtils.isNotBlank(order.getReceiverDetail())) {
//                address += order.getReceiverDetail();
//            }
//        }
//
//        if (StringUtils.isNotBlank(address)) {
//            // 获取经纬度
//            Coordinate startCoordinate = mapUtil.getCoordinate(address);
//            if (startCoordinate == null) {
//                log.warn("【订单揽件网点分配失败】经纬度获取异常");
//                return false;
//            } else {
//                Outlet outlet = outletMapper.selectNearestOutlet(startCoordinate.getLng(), startCoordinate.getLat());
//                if (outlet == null) {
//                    log.warn("【订单揽件网点分配失败】无法获取最优快递网点");
//                    return false;
//                } else {
//                    WebUser webUser = webUserMapper.selectCourier(outlet.getId());
//                    if (webUser == null) {
//                        log.warn("【订单揽件快递员分配失败】无法获取最优快递员");
//                    }
//                    if (start) {
//                        order.setStartOutlet(outlet.getId());
//                        if (webUser != null) {
//                            order.setStartCourier(webUser.getId());
//                        }
//                    } else {
//                        order.setEndOutlet(outlet.getId());
//                        if (webUser != null && ReceiveTypeEnum.SEND.getCode().equals(order.getPayment())) {
//                            order.setEndCourier(webUser.getId());
//                        }
//                    }
//                }
//            }
//        }
//        orderMapper.updateById(order);
//    }
//
//
//
//
//}
